package JavaEnum;

/**
 * 在 Java 5.0之前，想要定义一个枚举类较为繁琐，通常需要以下几个步骤：
 * 1.定义一个 Java 普通类作为枚举类，定义枚举类的属性，使用private final修饰；
 * 2.该类不提供外部实例化操作，因此将构造方法设置为私有，并初始化属性；
 * 3.在类内部，提供当前枚举类的多个对象 ，使用public static final修饰；
 * 4.提供常用的getter、setter或toString()方法。
 */
public class EnumDemo1 {

    /**
     * 性别枚举类
     */
    static class Sex {

        //定义常量
        private final String sexName;

        // 私有化构造器, 不提供外部实例化
        private Sex(String sexName) {
            // 在构造器中为属性赋值
            this.sexName = sexName;
        }

        public static final Sex MALE = new Sex("男");
        public static final Sex FEMALE = new Sex("女");
        public static final Sex UNKNOWN = new Sex("保密");

        /**
         *  getter方法
         */
        public String getSexName() {
            return sexName;
        }

        /**
         * 重写toString方法，方便外部打印测试
         */
        @Override
        public String toString() {
            return "Sex{" + "sexName= '" + sexName + '\'' + '}';
        }
    }

    public static void main(String[] args) {
        System.out.println(Sex.FEMALE.getSexName());
        System.out.println(Sex.MALE.getSexName());
        System.out.println(Sex.UNKNOWN.getSexName());
    }
}
